/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Negocios;

import Gestores.DtoObjects.UsuarioDTO;
import Gestores.Entidades.EntidadPermiso;
import Gestores.Entidades.EntidadUsuario;
import Gestores.Factory.FactoryClass;
import java.util.ArrayList;
import javax.swing.table.DefaultTableModel;

/**
 *
 * @author radxt
 */
public class UsuarioNegocio {
    
    private UsuarioDTO gestorUsuario;
    
    public UsuarioNegocio(){
        gestorUsuario = FactoryClass.getUsuarioInstance();
    }
    
    public ArrayList<EntidadPermiso> devolverPermisosLogin(String login) throws Exception{
        if(!login.isEmpty())
            return gestorUsuario.devolverPermisosLogin(login);
        else
            throw new Exception("login incorrecto");
    }
    
    public ArrayList<EntidadPermiso> devolverPermisosId(String Id) throws Exception{
        if(!Id.isEmpty())
            return gestorUsuario.devolverPermisosId(Id);
        else
            throw new Exception("Id incorrect");
    }
    
    public boolean verificarPassword(String login, String password) throws Exception{
        if(!login.isEmpty() && !password.isEmpty())
            return gestorUsuario.verificarPassword(login,password);
        else
            throw new Exception("datos invalidos");
    }
    
    public void actualizarUsuarioPassword(String id, String pass) throws Exception{
        if(!id.isEmpty() && !pass.isEmpty())
            gestorUsuario.actualizarUsuarioPassword(id, pass);
        else
            throw new Exception("datos invalidos");
    }
    
    public void insertarUsuario(EntidadUsuario e) throws Exception{
        if(validarDatosEntidad(e))
            gestorUsuario.insertarUsuario(e);
        else
            throw new Exception("Datos incorrectos");
    }
    
    public void asignarGrupoUsuario(String idUsuario, String idGrupo) throws Exception{
        if(!idUsuario.isEmpty() && !idGrupo.isEmpty())
            gestorUsuario.asignarGrupoUsuario(idUsuario, idGrupo);
        else
            throw new Exception("Datos incorrectos");
    }
    
    public ArrayList<Object> buscarUsuarioNombre(String nombre) throws Exception{
        if(!nombre.isEmpty())
            return gestorUsuario.buscarUsuarioNombre(nombre);
        else
            throw new Exception("nombre invalido");
    }
    
    public ArrayList<Object> listarUsuarios() throws Exception{
        return gestorUsuario.listarUsuarios();
    }
    
    public ArrayList<Object> buscarUsuarioApellido(String apellido) throws Exception{
        if(!apellido.isEmpty())
            return gestorUsuario.buscarUsuarioApellido(apellido);
        else
            throw new Exception("apellido invalido");
    }
    
    public Object devolverUsuario(String login) throws Exception {
        if(!login.isEmpty())
            return gestorUsuario.devolverUsuario(login);
        else
            throw new Exception("login invalido");
    }
    
    public void eliminarUsuario(String id) throws Exception{
        if(!id.isEmpty())
            gestorUsuario.eliminarUsuario(id);
        else
            throw new Exception("id invalido");
    }
    
    
    
    private boolean validarDatosEntidad(EntidadUsuario e){
        Integer i = e.getId();
        if( i == null) return false;
        if(e.getNombre() == null) return false;
        if(e.getApellido() == null) return false;
        if(e.getLogin() == null) return false;
        if(e.getPassword() == null) return false;
        return true;
        
    }
    
        public DefaultTableModel tabularDatos(ArrayList<Object> listaDatos) {
        String[] campos = new String[]{"Id","Nombre","Apellido","Login"};
        DefaultTableModel model = new DefaultTableModel(campos, 0);

        for (int i = 0; i < listaDatos.size(); i++) {
            EntidadUsuario u = (EntidadUsuario) listaDatos.get(i);
            Object[] camposAfiliado = new Object[]{u.getId(),u.getNombre(),u.getApellido(),u.getLogin()};
            model.addRow(camposAfiliado);
        }

        return model;
    }
        
//        public EntidadUsuario devolverUsuario()
}
